#ifndef SLIDE_PATH_H_
#define SLIDE_PATH_H_

// INCLUDES //
#include "path.h"
//////////////

/**
* A path that slides an object in a direction.
* 
* @author dfoelber
**/
class SlidePath : public Path
{
public:
	enum DIRECTION
	{
		SLIDE_UP = 1,
		SLIDE_DOWN = 2,
		SLIDE_LEFT = 4,
		SLIDE_RIGHT = 8
	};
	
public:
	/**
	* Constructor
	* 
	* @param direction The slide's direction
	* @param length The length of the slide
	* @param initialVel Velocity of the slide
	**/
	SlidePath( int direction, int length, double initialVel = 35.0 );
	
	/**
	* Lets the path know that time has passed and to move accordingly.
	* 
	* Overridden from Path.
	* 
	* @param ms The time passed since last called
	**/
	virtual void TimePassed( int ms );
	
	/**
	* Check if this path collided with another path.
	* 
	* Overridden from Path.
	* 
	* @param other The other path's area.
	* @param xDistance The other path's X distance.
	* @param yDistance The other path's Y distance. 
	* 
	* @return If collided
	**/
	virtual bool CheckCollision( Area* other, double xDistance, double yDistance );
	
	/**
	* Gets if the path is still moving.
	* 
	* Overridden from Path.
	* 
	* @return If the path is moving
	**/
	virtual bool IsMoving();
	
private:
	/// The velocity
	double		velocity;
	/// The direction
	int			direction;
	/// The length of the slide
	double		length;
};

#endif /*SLIDE_PATH_H_*/
